package com.wsoft.bpm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wsoft.bpm.entity.ActWorkflowConfigEntity;
import com.wsoft.bpm.query.node.*;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zhonglj
 * @since 2024年09月12日 10:00:59
 */
public interface IActWorkflowConfigService extends IService<ActWorkflowConfigEntity> {

    /**
     * 处理《开始事件》节点配置
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-12 11:03
     **/
    String convertXmlStartEvent(StartEventQuery req);

    /**
     * 处理工作流方向线条
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-19 16:02
     **/
    String convertXmlSequenceFlow(SequenceFlowQuery req);

    /**
     * 处理网关
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-19 16:03
     **/
    String convertXmlGateWay(GateWayQuery req);

    /**
     * 处理用户任务
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-19 16:03
     **/
    String convertXmlUserTask(TaskQuery req);

    /**
     * 边界定时事件
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-19 16:03
     **/
    String convertXmlTimeBoundaryEvent(TimeBoundaryEventQuery req);

    /**
     * 处理消息事件
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-19 16:04
     **/
    String convertXmlMessageBoundaryEvent(MessageBoundaryEventQuery req);

    /**
     * 处理结束事件
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-19 16:04
     **/
    String convertXmlEndEvent(EndEventQuery req);

    /**
     * 部署成功之后更新json配置数据绑定的部署信息
     *
     * @param modelId
     * @param deploymentId
     * @return void
     * @author zhonglj
     * @date 2024-09-23 9:39
     **/
    void updateAfterDeploy(String modelId, String deploymentId);

    /**
     * 工作流总流程配置
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-23 10:53
     **/
    String convertXmlProcess(ProcessQuery req);

    /**
     * 超时中间件事件
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-23 13:41
     **/
    String convertXmlTimeIntermediateEvent(TimeIntermediateEventQuery req);

    /**
     * 消息中间件事件
     *
     * @param req
     * @return java.lang.String
     * @author zhonglj
     * @date 2024-09-23 13:47
     **/
    String convertXmlMessageIntermediateEvent(MessageIntermediateEventQuery req);

    /**
     * 主动清除指定ModelId下的所有节点缓存数据
     *
     * @param req
     * @return void
     * @author zhonglj
     * @date 2024-10-31 18:26
     **/
    void clearModelCache(ProcessQuery req);
}
